<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GCC extensions</title>
<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
</head>

<body>
<h1>GCC extensions</h1>

<p>This is a list of (experimental) extensions to GCC which, for one
reason or the other, did not (yet) make it into the official source
tree. Please direct feedback and bug reports to their respective
maintainers, not our mailing lists.</p>

<h2><a href="https://github.com/blucia0a/CTraps-gcc">CTraps plugin for GCC</a></h2>

<p>CTraps, short for Communication Traps, adds a compiler pass as
a plugin that instruments instructions that access memory locations
that might be shared between threads.  It supports dynamic program
analysis, debugging, and performance tuning in concurrent code.</p>


<h2><a href="https://peter.colberg.org/gcc-lua">Lua plugin for GCC</a></h2>

<p>gcc‑lua extends GCC with the ability to run Lua scripts. The plugin
  provides an interface to register callback functions for plugin events,
  and inspect the abstract syntax tree of a translation unit.</p>


<h2><a href="https://starpu.gitlabpages.inria.fr">StarPU</a></h2>

<p>StarPU is a GCC extension and run-time support library for hybrid
  CPU/GPU task programming.  Its GCC plug-in allows programmers to
  annotate C code to describe tasks and their implementations.  Each
  task may have one or more implementations, such as CPU implementations
  or implementations written in OpenCL.</p>

<p>StarPU's support library schedules tasks over the available CPU cores
  and GPUs, and is also responsible for scheduling any data transfers
  between main memory and GPUs.</p>


<h2><a href="http://pdp10.nocrew.org/gcc/">PDP-10 port</a></h2>
<p>This is an experimental port of GCC to the DEC PDP-10
architecture.</p>


<h2>
Bounds checking patches for
<a href="https://sourceforge.net/projects/boundschecking/">GCC releases</a>
</h2>

<p>These patches add a <code>-fbounds-checking</code> flag that
adds bounds checking tests to pointer and array accesses.
Richard Jones developed the
<a href="http://www.doc.ic.ac.uk/~phjk/BoundsChecking.html">
patches against gcc 2.7</a> in 1995.
Herman ten Brugge is the current maintainer and has updated the patches for
GCC 2.95.2 and later.
William Bader has
<a href="http://williambader.com/bounds/example.html#download">patches
as well</a>.</p>

<p>You may freely mix object modules compiled with and without bounds
checking.  The bounds checker also includes replacements for
<code>mem*</code> and <code>str*</code> routines and can detect
invalid calls against checked memory objects, even from modules
compiled without bounds checking.</p>

<!--
<h1>GCC Museum</h1>

<p>These are extensions which do not (directly) apply to current GCC
sources but may be of historical interest or helpful to consult for
future development.</p>
-->

</body>
</html>
